#ifndef __HF_TMP102_H__
#define __HF_TMP102_H__

#include "hf_dev_abstract.h"
#include <stdint.h>

#define TMP102_DEFAULT_ADDR     0x90    // TMP102 默认I2C地址 (0x48 << 1)

#define TMP102_REG_TEMP         0x00    // 温度寄存器 (2字节)
#define TMP102_REG_CONFIG       0x01    // 配置寄存器
#define TMP102_REG_TLOW         0x02    // 低阈值寄存器
#define TMP102_REG_THIGH        0x03    // 高阈值寄存器

// TMP102 ioctl 命令码 (自定义)
#define TMP102_CMD_READ_TEMP_RAW    0x01  // arg: int16_t * (原始温度值)
#define TMP102_CMD_READ_TEMP_C      0x02  // arg: float * (摄氏温度)
#define TMP102_CMD_SET_CONFIG       0x03  // arg: uint16_t * (配置值)

struct hf_dev_tmp102 {
    struct hf_device *dev;       // 抽象层设备
    uint8_t slave_addr;         // I2C从地址
};

// 温度传感器配置枚举 (示例)
enum hf_tmp102_resolution {
    TMP102_RES_12BIT = 0x00,    // 默认12位分辨率
    TMP102_RES_13BIT = 0x60     // 扩展模式13位
};

/**
 * @brief  创建并注册TMP102设备
 * @param  name: 设备名称
 * @retval hf_device指针 或 NULL如果失败
 */
int8_t hf_tmp102_init(struct hf_device *dev, const char *name);

#endif /* __HF_TMP102_H__ */

